package com.kuang.lock8;

import java.util.concurrent.TimeUnit;

/**
 * @author luomingliang
 * @date 2021/5/13 20:57
 * 8锁，就是关于锁的8个问题
 *      5.增加了两个静态的同步方法，哪个先输出？ //发短信
 *      6.两个对象，两个静态的同步方法，哪个先输出？ //发短信
 */
public class Test3 {
    public static void main(String[] args) throws InterruptedException {
        //两个对象的Class模板只有一个，锁的是Class
        Phone3 phone1 = new Phone3();
        Phone3 phone2 = new Phone3();

        new Thread(()->{
            phone1.sendSms();
        } , "A").start();

        TimeUnit.SECONDS.sleep(1);

        new Thread(()->{
            phone2.call();
        } , "B").start();
    }
}

//Phone3唯一的一个class对象
class Phone3 {
    //synchronized锁的是方法的调用者
    //static 静态方法锁的是Class对象
    public static synchronized void sendSms() {
        try {
            TimeUnit.SECONDS.sleep(3);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("发短信");
    }

    public static synchronized void call() {
        System.out.println("打电话");
    }

}